package task4;

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

/**
 * 学生管理系统类
 */
public class StudentManageSystem {
    // 定义学生集合
    private List<Student> students = new ArrayList<>();

    // 添加学生信息方法
    public void add(Student student){
        // 若当前学生信息系统内容为空，直接添加
        if (students.size() == 0){
            students.add(student);
            System.out.println("当前学生信息添加成功！");
        }
        // 否则遍历看是否重复添加,这里用迭代器迭代，普通遍历会出现并发错误
        else {
            ListIterator<Student> listIterator = students.listIterator();
            while (listIterator.hasNext()){
                Student cur_student = listIterator.next();
                if (cur_student.getId().equals(student.getId()))
                    System.out.println("系统中已存在该学生信息！");
                else {
                    listIterator.add(student);
                    System.out.println("当前学生信息添加成功！");
                }
            }
        }
    }

    // 根据学号删除学生信息方法
    public void delete(String id){
        // 遍历全部学生，遇到学号一样的，对其进行删除，利用迭代器进行删除，否则会有并发错误
        ListIterator<Student> listIterator = students.listIterator();
        while (listIterator.hasNext()){
            Student cur_student = listIterator.next();
            if (cur_student.getId().equals(id)){
                listIterator.remove();
                System.out.println("学生信息删除成功！");
                break;
            }else
                System.out.println("输入学号有误！当前学生管理系统没有该学生信息！");
        }
    }

    // 根据学号修改学生信息方法
    public void modify(Student student){
        // 遍历全部学生，遇到学号一样的，对其信息进行修改
        for (Student st:students){
            if (st.getId().equals(student.getId())){
                st.setName(student.getName());
                st.setAge(student.getAge());
                System.out.println("已成功修改该学生信息！修改后的信息如下：");
                System.out.println(st.toString());
            }else
                System.out.println("输入学号有误！当前学生管理系统没有该学生信息！");
        }
    }

    // 按照学号查找学生信息方法
    public void find(String id){
        // 遍历全部学生，学号一样即找到该学生
        for (Student st : students){
            if (st.getId().equals(id)){
                System.out.println("当前查找到的学生信息如下：");
                System.out.println(st.toString());
            }
            else
                System.out.println("输入学号有误！当前学生管理系统没有该学生信息！");
        }
    }

    // 显示所有学生信息方法
    public void show(){
        System.out.println("-------------所有学生信息如下--------------");
        if (students.size() == 0)
            System.out.println("当前学生信息系统无学生信息！");
        else {
            for (Student s:students) {
                System.out.println(s.toString());
            }
        }
    }
}
